![Amazon Omicsを使ってみた(Omics Storage編) #reinvent](https://devio2023-media.developers.io/wp-content/uploads/2022/11/eyecatch_reinvent2022_just-try.png)
Amazon Omicsを使ってみた(Omics Storage編) #reinvent
みなさんこんにちは、杉金です。
先日、Amazon Omicsについて調べた内容を記事にしました。今回はAmazon Omicsを実際に使っていきます。以下のAWS公式ブログで紹介されている手順を参考に、Omics Storageの操作方法をご紹介します。
Amazon Omicsについて私が調べた記事は以下です。
やってみた
本記事執筆時点では東京リージョンに対応していないため、バージニアリージョンを選択します。
Amazon Omicsのトップページはこのような画面です。操作したい機能が決まっている場合は左側のメニューから選択します。はじめて使う際のガイドを利用したい場合はオレンジ色の「Get started」を選択します。
「Get started」を選択すると以下のように目的別に何の機能を使うかを案内してくれます。また、下にスクロールするとチュートリアルや各種ドキュメントのリンクがあります。
Omics Storageリファレンスストアへのインポート
リファレンスストアへのインポートをやってみます。インポートするデータはGenome Reference Consortium Human Reference 38(hg38)のオープンデータを使用します。
インポートするデータを用意
インポートするデータを自身が所有するS3バケットにコピーします。まずは、上記のリンク先にアクセスするとBroad Genome Referencesのページに飛びます。ここのDocumentationにアクセスします。
オープンデータの配置場所が分かります。hg38だと赤枠のようですね。
AWS CLIで記載されている場所にアクセスしてみます。
$ aws s3 ls s3://broad-references/hg38/ PRE v0/
「v0」というプレフィックスしか存在しないため、その配下にアクセスしてみます。
$ aws s3 ls s3://broad-references/hg38/v0/ 〜略〜 2018-11-07 08:47:01 4960627 Homo_sapiens_assembly38.contam.mu 2018-11-07 08:47:01 10950827213 Homo_sapiens_assembly38.dbsnp138.vcf 2018-11-07 08:47:21 12480412 Homo_sapiens_assembly38.dbsnp138.vcf.idx 2018-11-07 08:47:22 581712 Homo_sapiens_assembly38.dict 2018-11-07 08:47:23 3249912778 Homo_sapiens_assembly38.fasta 2018-11-07 08:47:53 487553 Homo_sapiens_assembly38.fasta.64.alt 2018-11-07 08:47:54 20199 Homo_sapiens_assembly38.fasta.64.amb 2018-11-07 08:47:54 455474 Homo_sapiens_assembly38.fasta.64.ann 2018-11-07 08:47:54 3217347004 Homo_sapiens_assembly38.fasta.64.bwt 2018-11-07 08:48:18 804336731 Homo_sapiens_assembly38.fasta.64.pac 2018-11-07 08:48:40 1608673512 Homo_sapiens_assembly38.fasta.64.sa 2018-11-07 08:48:53 20199 Homo_sapiens_assembly38.fasta.amb 2018-11-07 08:48:53 455474 Homo_sapiens_assembly38.fasta.ann 2018-11-07 08:48:53 1206505136 Homo_sapiens_assembly38.fasta.bwt 2018-11-07 08:49:26 160928 Homo_sapiens_assembly38.fasta.fai 2018-11-07 08:49:26 804336731 Homo_sapiens_assembly38.fasta.pac 2018-11-07 08:49:27 402168392 Homo_sapiens_assembly38.fasta.sa 2018-11-07 08:49:28 61692306 Homo_sapiens_assembly38.known_indels.vcf.gz 2018-11-07 08:49:31 1567886 Homo_sapiens_assembly38.known_indels.vcf.gz.tbi 2018-11-07 08:49:31 843824398 Homo_sapiens_assembly38.ref_cache.tar.gz 〜略〜
複数のファイルが表示されました。今回は上記のうち「Homo_sapiens_assembly38.fasta」を使用します。(8行目のハイライト部分) このファイルを自身が所有するS3バケットにコピーします。
$ aws s3 cp s3://broad-references/hg38/v0/Homo_sapiens_assembly38.fasta s3://自己所有のS3バケット/
インポート操作
Amazon Omicsのコンソールから「Reference store」→「Import reference genome」を選択します。
インポートジョブの作成画面が表示されますので、項目を埋めていきます。はじめに「Quick create」と「Manual create」の2つがあります。違いとしてはデータ暗号化に使用するAWS KMSキーをAWS所有キーとする方が「Quick create」で、別途KMSキーを指定する方が「Manual create」です。今回は「Quick create」を選択します。次に名前を適当に決め、説明欄は任意ですので今回スキップします。
続いてSelect reference from S3で、先ほどコピーしたS3の場所を指定します。「Browse S3」を選ぶと自己所有のS3バケットが表示されますので、ここから選択することもできます。その下にある入力項目(Service Access)では、Amazon OmicsがS3やKMSにアクセスするためのIAMロールを設定します。今回はインポートジョブ作成と合わせて新規作成する形としました。
あとはそのまま下にスクロールして、「Import reference genome」を選択します。
インポートされたことの確認
インポートジョブ作成後、リファレンスストアの画面から見ると、「Details」タブの画面下部にリファレンスゲノムとして1つ追加されていることが分かります。
「Imports」タブからもインポートジョブの状態が一覧として確認でき、Completedであることが確認できます。
以上がリファレンスストアへのインポートです。
Omics Storageシーケンスストアへのインポート
シーケンスストアへのインポートを行います。シーケンスストア内の各オブジェクトはリードセットと呼ばれます。リードセットはゲノミクスファイルタイプを抽象化したものです。リードセットとしてインポートするファイルは以下のフォーマットに対応しています。
インポートするデータ
インポートするデータは1000 Genomes Project and AWSの中から以下を使用します。
s3://1000genomes/phase3/data/HG00146/sequence_read/SRR233106_1.filt.fastq.gz
s3://1000genomes/phase3/data/HG00146/sequence_read/SRR233106_2.filt.fastq.gz
このファイルを自身が所有するS3バケットにコピーします。
$ aws s3 cp s3://1000genomes/phase3/data/HG00146/sequence_read/SRR233106_1.filt.fastq.gz s3://自己所有のS3バケット/ $ aws s3 cp s3://1000genomes/phase3/data/HG00146/sequence_read/SRR233106_2.filt.fastq.gz s3://自己所有のS3バケット/
シーケンスストア作成
リファレンスストアとは異なり、まずはインポート先となるシーケンスストアを作成します。Amazon Omicsのコンソールから「Sequence store」→「Create a sequence store」を選択します。
シーケンスストアの作成画面に変わります。最初に名前を適当に決め、説明欄は任意ですので今回スキップします。
下にスクロールするとData encryptionの選択項目があります。データ暗号化に使用するAWS KMSキーを決めるもので今回はUse AWS owned keyを選びます。その後に「Create a sequence store」を選択します。
シーケンスストアに作成したストアが存在することを確認します。
マニフェストファイルの作成
インポートに必要なマニフェストファイルを作成します。ファイルフォーマットはyamlかjsonに対応しています。公式ブログのサンプル(json)を記載いたします。
{ "sourceFiles": { "source1": "s3://channy-omics/SRR233106_1.filt.fastq.gz", "source2": "s3://channy-omics/SRR233106_2.filt.fastq.gz" }, "sourceFileType": "FASTQ", "subjectId": "mySubject2", "sampleId": "mySample2", "referenceArn": "arn:aws:omics:us-east-1:123456789012:referenceStore/123467890", "name": "HG00100" }
今回の変更すべきポイントは主に2つです。
- sourceFilesのsource1と2の置き換え
- referenceArnの置き換え
sourceFilesのパスはS3バケットからアップロードしたファイルを選択して「Copy S3 URI」をするとコピーされますので、2ファイルとも置き換えてください。
referenceArnはリファレンスゲノムの詳細画面にARNが記載されていますので、こちらをコピーして置き換えください。
以上が主に変更する箇所ですが、他の項目も必要に応じて変更ください。
インポート操作
コンソールの「SequenceStore」から、作成した「MySequnseStore」を選んで「Import genomic files」を選択します。
インポートジョブの作成画面に切り替わります。まずはリファレンスゲノムを選択します。
続いて、Service accessではリファレンスゲノムと同様に新規作成を選びました。その下のGenomic source data in S3ではコピーしたファイルを入力します。リファレンスゲノムの時と同様に「Browse S3」からファイルを選択できます。
次はマニフェストファイルをアップロードします。問題ないと下記のように緑のチェックマークがつきます。内容に問題があるとエラーが出ます。
問題なければ下にスクロールして「Create import job」を選択します。
インポートされたことの確認
「MySequnseStore」にリードセットが読み込まれたことを確認したらインポートはOKです。
以上がシーケンスストアへのインポートです。
インポートしたリファレンスゲノムの削除方法
シーケンスストアのリードセットはコンソールから削除できるのですが、リファレンスゲノムの削除は本記事執筆時点ではコンソールから削除できなさそうでした。AWS CLIでの削除方法をご紹介します。
リファレンスゲノムの削除
以下のコマンドで削除を行います。リファレンスゲノムIDとリファレンスストアIDはそれぞれコンソールから確認できます。
aws omics delete-reference --id [リファレンスゲノムID] --reference-store-id [リファレンスストアID]
最後に
今回、Omics Storageへのインポートを試してみました。記事のボリューム感はありますが、初めての方向けになるようスクショを多めにしたため、実際の操作はそれほど難しくはないなという印象です。あとは分析だったりワークフローが上手く動くかも今後試していければと思います。
参考資料
- Introducing Amazon Omics – A Purpose-Built Service to Store, Query, and Analyze Genomic and Biological Data at Scale
- Getting started with Amazon Omics | Amazon Omics User Guide | Amazon Omics Documentation
- Amazon Omics User Guide | Amazon Omics Documentation
- API Reference | Amazon Omics Documentation